package DataLayer.DataManager;

import DataLayer.ImageDataContainer.ImageComponentsInfo.CharacterStatistics;
import DataLayer.ImageDataContainer.ImageComponentsInfo.IImageComponentsInfo;
import DataLayer.ImageDataContainer.ImageComponentsInfo.ImageComponentsInfo;
import DataLayer.ImageDataContainer.ImageInfo.IImageInfo;
import DataLayer.ImageDataContainer.ImageInfo.ImageInfo;
import DataLayer.ImageDataContainer.RetrievedText.IRetrievedText;
import DataLayer.ImageDataContainer.RetrievedText.RetrievedText;
import DataLayer.KnowledgeBase.IKnowledgeBaseControl;
import DataLayer.KnowledgeBase.KnowledgeBaseControl;
import javax.xml.parsers.ParserConfigurationException;

public class DataManager implements IDataManager {

    protected IImageInfo imgInfo;
    protected IImageComponentsInfo imgCompInfo;
    protected IRetrievedText rText;
    protected IKnowledgeBaseControl kBaseControl;
    protected CharacterStatistics charStats;

    /**
     * The constructor.
     * @throws ParserConfigurationException
     */
    public DataManager() throws ParserConfigurationException {
        imgInfo = new ImageInfo();
        imgCompInfo = new ImageComponentsInfo();
        rText = new RetrievedText();
        kBaseControl = new KnowledgeBaseControl();
        charStats = new CharacterStatistics();
    }

    /**
     * Returns the IImageInfo component.
     * @return - The IImageInfo component.
     */
    public IImageInfo getImageInfo() {
        return imgInfo;
    }

    /**
     * Sets the IImageInfo component with the specified component from the parameter.
     * @param imgInfoParam - The IImageInfo component.
     */
    public void setImageInfo(IImageInfo imgInfoParam) {
        imgInfo = imgInfoParam;
    }

    /**
     * Returns the IImageComponentsInfo component.
     * @return - The IImageComponentsInfo component.
     */
    public IImageComponentsInfo getImageComponentsInfo() {
        return imgCompInfo;
    }

    /**
     * Returns the CharacterStatistics component.
     * @return - The CharacterStatistics component.
     */
    public CharacterStatistics getCharacterStatistics() {
        return charStats;
    }

    /**
     * Returns the KnowledgeBase Control component.
     * @return - The KnowledgeBase Control component.
     */
    public IKnowledgeBaseControl getKnowledgeBaseControl() {
        return kBaseControl;
    }

    /**
     * Returns the IRetrievedText component.
     * @return - The IRetrievedText component.
     */
    public IRetrievedText getRetrievedTextComponent() {
        
        return rText;
    }

    public void setImageComponentsInfo(IImageComponentsInfo compInfo) {
        // TODO add implementation and return statement
    }

    public void setRetrievedText(String text) {
        // TODO add implementation
    }
}
